iconhelper: Short-circuit clear() if it's cleared already
authorTimm Bäder <mail@baedert.org>
Sat, 14 Oct 2017 12:58:13 +0000 (14:58 +0200)
committerTimm Bäder <mail@baedert.org>
Sat, 14 Oct 2017 15:27:55 +0000 (17:27 +0200)
gtk/gtkiconhelper.c

index 51954a7c18ebd1aaa924a93c6c29ea7c6020024e..5fe768995bfadfe21427362c2fbfd514e320a409 100644 (file)
@@ -85,12 +85,13 @@ _gtk_icon_helper_clear (GtkIconHelper *self)
   g_clear_object (&self->texture);
   g_clear_pointer (&self->rendered_surface, cairo_surface_destroy);
 
-  gtk_image_definition_unref (self->def);
-  self->def = gtk_image_definition_new_empty ();
-
+  if (gtk_image_definition_get_storage_type (self->def) != GTK_IMAGE_EMPTY)
+    {
+      gtk_image_definition_unref (self->def);
+      self->def = gtk_image_definition_new_empty ();
+      gtk_icon_helper_invalidate (self);
+    }
   self->icon_size = GTK_ICON_SIZE_INVALID;
-
-  gtk_icon_helper_invalidate (self);
 }
 
 void